/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.fesppr.sacob.dao;

import br.fesppr.sacob.dto.AtendimentoDTO;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author alexandre
 */
public class AtendimentoDAO 
{

    private Statement stm;
    private Connection con;

    public AtendimentoDAO()
    {
        try {
            con = SacobDAO.getConexao();
            stm = con.createStatement();
        } catch (SQLException ex) {
            Logger.getLogger(PessoaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
   
    public void geraAtendimento(AtendimentoDTO atendimento)
    {
        try {
            stm.executeUpdate("INSERT INTO tatendimento(id_atendimento, descricao, tipo_atendimento, status, produto, prioridade, nome_cli,data_atendimento)VALUES(" + atendimento.getProtocolo() + ",\'" + atendimento.getDescricao() + "\', \'" + atendimento.getTipoAtendimento() + "\',\'" + atendimento.getStatus() + "\',\'" + atendimento.getProduto() + "\',\'" + atendimento.getPrioridade() + "\',\'" + atendimento.getNomeCliente() + "\',\'" + atendimento.getData() + "\');");
            stm.close();
            con.close();
            JOptionPane.showMessageDialog(null,"Atendimento Salvo","SACOB",JOptionPane.INFORMATION_MESSAGE);
        } catch (SQLException ex) {
            Logger.getLogger(AtendimentoDAO.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null,"Falha ao salvar atendimento","SACOB",JOptionPane.INFORMATION_MESSAGE);
        }catch(Exception e)
        {
            JOptionPane.showMessageDialog(null,"Falha ao salvar atendimento","SACOB",JOptionPane.INFORMATION_MESSAGE);
        }
            
    
    }
     public AtendimentoDTO listaProtocolo(int protocolo)
    {
           AtendimentoDTO a = new AtendimentoDTO();
        ResultSet rs =null;
        
        
        try {
             rs = stm.executeQuery("SELECT * FROM tatendimento WHERE id_atendimento = " + protocolo + "");
             while(rs.next())
            {
                a.setProtocolo(rs.getInt("id_atendimento"));
                a.setNomeCliente(rs.getString("nome_cli"));
                a.setStatus(rs.getString("status"));
                a.setProduto(rs.getString("produto"));
                a.setData(rs.getString("data_atendimento"));
                a.setDescricao(rs.getString("descricao"));
                
            }
             
             
                          
        } catch (SQLException ex) {
            Logger.getLogger(PessoaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        catch(Exception e)
        {
            JOptionPane.showMessageDialog(null,"Falha ao buscar atendimento","SACOB",JOptionPane.INFORMATION_MESSAGE);
        }
        
        return a;
     }
   
    public ArrayList<AtendimentoDTO> listaAtendimento() 
    {
        ResultSet rs =null;
        
        ArrayList<AtendimentoDTO> lista = new ArrayList<AtendimentoDTO>();
        
        try 
        {
             rs = stm.executeQuery("SELECT * FROM TATENDIMENTO WHERE status = 'Pendente' ");
         
            while(rs.next())
            {
                AtendimentoDTO a = new AtendimentoDTO();
                a.setProtocolo(rs.getInt("id_atendimento"));
                a.setStatus(rs.getString("status"));
                a.setNomeCliente(rs.getString("nome_cli"));
                a.setDescricao(rs.getString("descricao"));
                a.setProduto(rs.getString("produto"));
                a.setPrioridade(rs.getString("prioridade"));
                a.setData(rs.getString("data_atendimento"));
                lista.add(a);
            }
                          
        } catch (SQLException ex) 
        {
            Logger.getLogger(PessoaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return lista;
    }
    public void finalizarAtendimento (AtendimentoDTO atendimento, int protocolo)
      {
        try
        {
         stm.executeUpdate("UPDATE tatendimento SET status=\'"+ atendimento.getStatus()  +"\', solucao=\'"+atendimento.getSolucao()+"\',  satisfacao=\'"+atendimento.getSatisfacao()+"\' WHERE id_atendimento = " + protocolo +";");
        
         JOptionPane.showMessageDialog(null, "As alterações foram realizadas com Sucesso!", "SACOB", JOptionPane.INFORMATION_MESSAGE);
        }
        catch (Exception e)
        {
         e.printStackTrace();   
        }
    }
    public int contadorProtocolo () throws SQLException
    {
        ResultSet rs = stm.executeQuery("SELECT id_atendimento FROM tatendimento ORDER BY id_atendimento DESC;");
        rs.next();
        int ultimo = rs.getInt("id_atendimento");
        return ultimo + 1;
    }
     protected void finalize() throws Throwable
    {
        stm.close();
        con.close();
    }

}
  

